The Internet is a collection of interconnected networks, all of which use the Internet Protocol (IP). The connections between these networks can be used to support a wide range of applications including, for example, electronic mail, file transfer, electronic commerce, downloading of web site information, and voice over IP. Different types of IP services may require different qualities of service. Quality of service (QoS) is the level of assurance that the network can meet a particular application's service requirements. From a technical perspective, quality of service can be characterized by several performance criteria such as availability, throughput, setup time, percentage of successful transmissions, etc., and can be measured in terms of bandwidth, packet loss, delay, and jitter. In an IP header, one of the fields typically corresponds to a traffic class, which enables different types/classes of traffic to be differentiated from others. A higher level traffic class corresponding to a higher quality of service may be given a higher priority than a lower level traffic class with a lower QoS. For example, real-time applications such as voice might be given a higher priority than other non-real-time applications such as e-mail.
In IP networks that support multiple quality of service classes, there may be situations when one traffic class with stricter delay requirements is multiplexed with another traffic class with less strict delay requirements. For example, voice traffic has strict delay requirements while certain types of data traffic typically has less strict delay requirements. In such a situation, even though the voice traffic has priority over the data traffic, the delay of voice packets is nonetheless influenced by the size of the data packets. At the start of transmission of a large data packet, a voice packet cannot be sent until transmission of that large data packet is finished. For example, if the size of the data packet is one kilobyte and the transmission rate is 64 kbps, the next voice packet to be transmitted in the multiplexed transmission may be delayed by as much as 125 milliseconds.
Accordingly, the way in which IP packets are sized or the way in which IP packets are fragmented/segmented for transmission may affect delay and other service parameters. One example algorithm for fragmenting packets is the point-to-point protocol (PPP) multilink protocol (MP) described in an IETF RFC written in 1990 by K. Sklower et al. entitled, “The PPP Multilik Protocol W).” The RFC indicates that systems implementing the multilink procedure are not required to segment packets, although segmentation may be performed. Segmenting longer, lower priority data packets may prevent transmission delays of a voice packet on a multiplexed transmission link. However, no segmenting algorithm is described in the RFC.
One simple approach to segmenting data packets for multilink procedures, (as well as for other procedures), is to divide the packet into segments of equal size, with all of the segments having the maximum segmentation size possible. More than likely, some portion of the packet smaller than the maximum segmentation size will make up the last packet segment. Unfortunately, this relatively simple segmentation procedure does not take into account how it impacts transmission delays for both the voice and data.
Consider the example in FIG. 1 which shows the output of a voice buffer or queue when there is no data traffic to be transmitted over a multiplexed link A first voice burst includes four packets separated by a very brief idle period from a second voice burst that contains five voice packets. A considerably longer idle period separates the second and third voice bursts, the third voice burst having five data packets, etc. FIG. 2 illustrates a situation where data traffic is interspersed in the transmission with the voice traffic. The timing of transmission of the original voice burst when there is no data traffic is illustrated in dotted blocks for comparison to the multiplexed transmission. The data packet is segmented into four segments, with segments 1, 2, and 3 having the same segment size, and the last segment 4 having a much smaller size.
As can be seen in FIG. 2A, the five packets in the second voice burst are uniformly delayed by the time it takes to transmit the first data packet segment minus the duration of the first idle period. If the idle period were longer, the delay in transmitting the voice packets in the second burst would be shorter. Segment 1 of the data packet could have increased the delay of the corresponding burst by a value uniformly distributed between 0 and the segment size. This is the case for all other segments. In other words, large data segments are more likely to cause longer voice delays.
To better understand how segmentation affects the delay of the segmented packet, examine two other segmentation options. FIG. 2B shows a situation where the size of Segment 3 is increased and the size of Segment 2 is decreased by the same amount of bytes. Although the delay of the third voice burst is reduced, the overall delay of the data packet remains the same. FIG. 2C shows that when the size of the last segment is increased, the delay of the data packet decreases. Thus, the delay of the last segment corresponds to the delay of the complete packet and depends on the size of the last segment, assuming the packet size does not change. Accordingly, in to achieve lower delay for the data packet, the last segment should be as large as possible. For lower voice delay, the largest data packet segments should be as small as possible.
FIG. 3 shows a graph where the size of the last segment and the size of the largest segment for a 1013-byte data packet is plotted as a function of maximum segmentation size in the case where a maximum segmentation algorithm is used. Using this maximum segmentation algorithm is not optimal because the last segment ends up being smaller than the maximum size. Indeed, in some situations, the last segment is very small which corresponds to a longer, “worst case” delay of data packets.
More formally, if the size of the last segment is denoted by L, the packet size by P, and the bit rate of the multiplexed link by C, the time needed to transmit the last data packet segment is L/C. The time needed for transmission of the data packet is (T1+T2), where T1 is the time when the sum of idle times between voice bursts is equal to (P−L)/C, and T2=L/C. Therefore, the delay of the data packet is minimal if the size of last segment is maximized.
Based on these recognitions, two general rules are employed to characterize how the segmentation size of data packets influences delays in the voice/data multiplex transmission. First, a worst case delay increase of higher priority voice packets is reduced when the size of the largest data segment is reduced. Second, the delay of low priority data packets is reduced when the size of the last data segment, (not the size of the largest segment), is increased relative to the size of the other segments of the data packet.
The efficiency of transmitting lower priority data traffic along with higher priority traffic is improved by segmenting a data packet in such a way so as to reduce transmission delay of the higher priority traffic. The data packet is segmented so that all its segments, including the last segment, are approximately the same size. The segment size is set smaller than a maximum permitted segment size. However, there may be reasons not to set that size too small. For example, because each includes a protocol header, the total “overhead” of the data packet transmission is proportional to the number of segments. To reduce such overhead, the number of segments should preferably be kept to the minimum number allowed by the maximum permitted segment size. Thus, it is desirable (though not necessary) to set the segment size as small as design parameters allow in order to reduce transmission delay of the higher priority traffic but at the same time not increase overhead associated with segment headers. Because the last segment is set at the same size or a larger size than the other segments, delay in transmitting the data packet is also reduced. The last segment may be sized as large as practical to minimize the transmission delay of the data packet. Once segmented, the data packet segments are transmitted along with the higher priority traffic.
One example, non-limiting implementation employs a relatively simple algorithm. Initially, an overall size of the data packet to be transmitted is determined. First and second segment sizes are determined for the data packet. The first and second segment sizes are determined to reduce the delay in transmitting the higher priority traffic, transmitting the data packet, or both. The data packet is segmented into plural segments at the first segment size and a last segment at the second segment size. The higher priority traffic is multiplexed along with the data packet segments. The first segment size is smaller than the maximum allowed segment size, and all of the data packet segments except the last segment are the same first segment size. Although the last segment may be the same size as the first segment size, the second segment size is preferably larger than the first segment size.
The examples above, described with two priority levels of traffic, may be applied to multiplexed transmissions with three or more traffic priority levels. Two detailed, non-limiting, examples of how to implement the basic segmenting algorithm are described below. In general, the first example emphasizes delay reduction for higher priority traffic, while the second example emphasizes delay reduction for the lower priority data packet segments. However, both the first and second segmentation examples achieve delay reductions for both the high priority and data packet traffic.